1
从命名空间到健壮的模块系统
AI020Lesson 6
00:00

在早期的 JavaScript 开发中, 命名空间污染 是一个重大障碍。当无关代码共享一组全局变量名时,会出现不可预测的冲突。现代设计已从无结构的态度转向 隔离的模块系统

1. 功能隔离(立即执行函数表达式)

通过将代码包裹在 立即执行函数表达式 (IIFE)中,我们创建了一个私有作用域。像 names 这样的变量被限制在函数内部,无法被全局环境访问。

(function() {
var internal = "secret";
console.log(internal);
})();

2. 基于对象的接口

为了向外部世界提供功能,一个模块会返回一个对象,作为其 公共接口。这将相关的方法(如 namenumber)归入一个重新声明的全局变量下。

私有作用域[names 数组]接口name(),number()

3. 导出模式

一种更复杂的变体涉及将一个 exports 对象传入 IIFE。这使得模块可以将其 API 直接附加到特定的命名空间目标上,从而在模块使用方式上提供了灵活性。

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>